load("//bzl:cpp_library.bzl", "cpp_library")

package(default_visibility = ["//visibility:public"])

cpp_library(
    name = "apply_tuple",
    hdrs = ["ApplyTuple.h"],
    deps = [
        ":invoke",
        "//folly:traits",
        "//folly:utility",
    ],
)

cpp_library(
    name = "invoke",
    hdrs = ["Invoke.h"],
    deps = [
        "//folly:cpp_attributes",
        "//folly:portability",
        "//folly:preprocessor",
        "//folly:traits",
        "//folly:utility",
        "//folly/lang:customization_point",
        "@boost.preprocessor",
    ],
)

cpp_library(
    name = "partial",
    hdrs = ["Partial.h"],
    deps = [
        ":invoke",
        "//folly:utility",
    ],
)

cpp_library(
    name = "protocol",
    hdrs = ["protocol.h"],
    deps = [
        ":invoke",
        ":traits",
        "//folly:portability",
        "//folly:traits",
    ],
)

cpp_library(
    name = "traits",
    hdrs = ["traits.h"],
    deps = [
        "//folly:traits",
    ],
)
